import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Es la clase del enemigo Rocub.
 * 
* @author Daniel Isaac Marmolejo Pereira
 * @version Final
 */
public class Rocub extends Enemigo
{
    /**
     *Contructor iguala la velocidad pasada a la heredada.
     *Crea el arreglo para las imagenes, para mostrar el efecto de movimiento.
     *
     *@param Velocidad.
     */
   private Mundo mundo;
   private Actor escalon;
   private GreenfootImage[] im;
   private int x;
   private int px;
   private boolean band=false;
   private int i;
   private int j;
    
   public Rocub(int x)
    {
        super.velocidad(x);
        
       i=0;
       j=10;
       im=new GreenfootImage[20];
        im[0]=new GreenfootImage("1.gif");
        im[1]=new GreenfootImage("2.gif");
        im[2]=new GreenfootImage("3.gif");
        im[3]=new GreenfootImage("4.gif");
        im[4]=new GreenfootImage("5.gif");
        im[5]=new GreenfootImage("6.gif");
        im[6]=new GreenfootImage("7.gif");
        im[7]=new GreenfootImage("8.gif");
        im[8]=new GreenfootImage("9.gif");
        im[9]=new GreenfootImage("10.gif");
        im[10]=new GreenfootImage("1.gif");
        im[11]=new GreenfootImage("12.gif");
        im[12]=new GreenfootImage("13.gif");
        im[13]=new GreenfootImage("14.gif");
        im[14]=new GreenfootImage("15.gif");
        im[15]=new GreenfootImage("16.gif");
        im[16]=new GreenfootImage("17.gif");
        im[17]=new GreenfootImage("18.gif");
        im[18]=new GreenfootImage("19.gif");
        im[19]=new GreenfootImage("20.gif");
    }
    /**
     * Llama al metodo mueve(), consulta la velocidad de la clase superior.
     */
    public void act() 
    {
        this.indice();
        mundo=(Mundo)super.getWorld();
        auxl auxl = mundo.DameAuxl();
        mueve(super.consultaVelocidad());
        px=auxl.getX();
    }   
    /**
     *Genera el efecto de movimiento disminuyendo la posición en x (POLIMORFISMO).
     *@param velocidad.
     *
     */
    public void mueve(int x)
    {
        if(!chocaEscalon())
        {
        if(getX()>px && !band)
        {
            setLocation(getX()-(x),getY());
             j++;
            setImage(im[j]);
        }
        else if(getX()>px && band)
        {
            setLocation(getX()-(x-5),getY());
            j++;
            setImage(im[j]);
        }
        else if(getX()<px)
        {
            setLocation(getX()+(x-5),getY());
            i++;
            setImage(im[i]);
            band=true;
        }
        }else
        {
        setLocation(getX()-(x),getY());
        j++;
        setImage(im[j]);
        }
    }
    /**
     * Pone los indices a su valor determinado.
     */
    public void indice()
    {
        if(i==9)
            i=0;
        if(j==19)
            j=10;
    }
    /**
     * Checa si choca con un escalon, si choca se recorre con el escalon.
     */
    public boolean chocaEscalon()
    {
        escalon=super.getOneIntersectingObject(Escalon.class);
        if(escalon!=null)
        {
            return true;
        }
        else
        {
           return false;
        }
    }
}
